ITパスポート対策 疑似言語編
基本的なITの知識ついて問う「ITパスポート」は、IPA(独立行政法人 情報処理推進機構)が実施する国家試験で、毎年多くの社会人が受験しています。ITパスポートは今後社会に出た際に役立つだけではなく、大学入試でも大きなメリットがあるため、高校生のうちに受験するケースが増えています。
IPAが公開している試験に関する統計情報を見ても、全体および高校生の受験者数が増加しており、高校生の中でも普通科クラスの生徒の受験者が前年比29.4%増と大きく増加しています。
令和7年度「iパス(ITパスポート試験)」の年間応募者数等について
大学入試でITパスポート合格者を優遇する大学が増えてきているのが要因だと思います。
大学・短大ににおける情報処理技術者試験の入試優遇
※詳細は各大学にてご確認ください
また、高校の授業、「情報Ⅰ」とITパスポートで学習する範囲に共通する点などあり、情報Ⅰ対策として、ITパスポートを学習していくことも有効であるようです。
ITパスポート合格後は、基本情報技術者試験、応用情報技術者試験とステップアップしていき、IT技術者としてスキルアップいくことも可能です。
ただ、ITパスポートはIT技術者向けの資格なのかと言われれば、そうではありません。あらゆる仕事において、IT技術が必須になった現代において、どのような仕事に就くとしても、必要な知識を問われる資格になっています。
企業によっては、IT専門の職種でない従業員に対しても、ITパスポート取得を推奨もしくは必須としている企業もあるくらいです。
ITパスポートに出題される問題を解いてみましょう
ストラテジ系(経営全般):35問程度
マネジメント系(IT管理):20問程度
テクノロジ系(IT技術):45問程度
【ITパスポート試験】試験内容・出題範囲
どれも、高校生にとってはハードルが高い内容かもしれませんが、特にストラテジ系は高校生は苦戦するかもしれませんね。仕事に関する知識がメインになりますので。
コツコツと参考書を読んだり、大人から話を聞いていくのが良いでしょう。
そして、テクノロジ系の中には「プログラミング」に関する問題が出題され、これも苦戦する問題の一つのようです。情報Ⅰにもプログラミングの問題がでますが、どちらも「疑似言語」という実際には存在しないプログラミング言語を使います。
細かく言うと、情報Ⅰはpythonというプログラミング言語に近い文法で、ITパスポートは独自の文法を使った言語になっており、少し記述方法が異なりますが、しっかりとデータ構造、制御構文を覚えれば、お互いに応用が利きます。
情報ⅠもITパスポートも、このプログラミング問題で得点に大きく差がつく傾向にあるようですが、しっかり理解できれば、逆に得点しやすい分野だと思っています。
ひとつ過去問を考えてみましょう。
ITパスポート過去問より
関数binaryToIntegerは、1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り、その値を整数に変換した結果を戻り値とする。
例えば、引数として"100"を受け取ると、4を返す。
プログラムの中のa,bに入れる字句の適切な組み合わせはどれか。
[プログラム]
〇整数型:binaryToInteger(文字列型: binaryStr)
整数型:integerNum, digitNum, exponent, i
integerNum ← 0
for(iを1からbinaryStrの文字列まで1ずつ増やす)
digitNum←binaryStrの末尾からi番目の文字を整数型に変換した値
exponent ← a
integerNum←b
endfor
return integerNum
選択肢
| a | b | |
|---|---|---|
| ア | (2のi乗) - 1 | integerNum × digiNum × exponent |
| イ | (2のi乗) - 1 | integerNum + digiNum × exponent |
| ウ | 2の(i - 1)乗 | integerNum × digiNum × exponent |
| エ | 2の(i - 1)乗 | integerNum + digiNum × exponent |
解説
試験で使用する情報技術に関する用語・プログラム言語など
全く対策せずに臨むと、問題文の意味も理解できず、なんとなく選択肢の中から選んでしまうという解答になると思いますが、しっかり対策すればそんなに難しい問題ではないです。
まずは、この問題文を読んで、何をしないといけないかをしっかり考えましょう。
問題文中 「例えば、引数として"100"を受け取ると、4を返す。」という記述より10進数を2進数に変換する「基数変換」の問題であることがわかります。基数変換はITパスポートおよび情報Ⅰの出題範囲です。
※試験対策のため10進数の1~8の数値を2進数にすると 001 , 010 , 011 , 100 , 101 ,110 ,111 , 1000くらいまでは、暗記しておくといいかも知れませんね。
ここで、2進数を10進数に基数変換する基本的な方法を考えます。
「桁の重みに桁に書かれた数値を掛け、その結果をすべて加算する」という手順になります。
重みとは「~の位」と思ってください。
10進数だと右から 1の位、10の位、100の位となります。
これは10の0乗の位、10の1乗の位、10の2乗の位・・・というように言い換えられます。
2進数の時も同じ考えで、
右から2の0乗の位、2の1乗の位、2の2乗の位・・・
以上を踏まえて、プログラムを見ていきます。
for から始まるところが、引数に与えられた値の右から順番に 「値」×「重み」を繰り返し、その答えを加算しているという動きになります。
変数exponentに重みを代入し、integerNumに「値」×「重み」を加算しているのだろうと推測できます。
さきにbの方が考えやすいですね。
「値」(digitNum)×「重み」(exponent)を答え(integerNum)に加算しているのは「integerNum + digitNum × exponent」ですね。
aを考えると、これは「重み」を計算しているところですね。2進数の重みは右から2の0乗、2の1乗、2の3乗・・・でした。
プログラムを見るとiは1からスタートと書かれています。iの数値が0乗、1乗、2乗と変化していく必要があるので、i - 1しないといけませんね。
よって2の(i - 1)乗が答えになります。
以上より答えは エ になります。
まとめ
プログラムの問題は、本を読んで勉強するだけではなく、実際に書いて動かして、データの動きをイメージし、理解できるようになると、この程度の問題は簡単に解けるようになります。
ちなみにpythonでコーディングするとこんな感じですね。
def binaryTointeger(binaryStr):
integerNum = 0
digiNum = 0
exponent = 0
for i in range(1,len(binaryStr) + 1):
digiNum = int(binaryStr[-1 - i + 1])
exponent = 2 ** (i - 1)
integerNum = integerNum + digiNum * exponent
return integerNum
print(binaryTointeger("100"))
#4が出力される
ループのカウンター(i)を問題文に合わせて1から始めてるので、少し書き方に無駄がありますがご了承ください
みんなのパソコン教室宇和島本校では、プログラミングを書くことに特化したレッスンもITパスポート対策講座もおこなっております。
気になる方はお気軽にお問い合わせください。
ITパスポート合格コース